服务端对客户端进行回调

您所在的位置:网站首页 page import= javautilmapentry 服务端对客户端进行回调

服务端对客户端进行回调

2023-02-17 15:45| 来源: 网络整理| 查看: 265

服务端对客户端进行回调通过参数回调从服务器端调用客户端逻辑特性说明

参数回调方式与调用本地 callback 或 listener 相同,只需要在 Spring 的配置文件中声明哪个参数是 callback 类型即可。Dubbo 将基于长连接生成反向代理,这样就可以从服务器端调用客户端逻辑。可以参考 dubbo 项目中的示例代码。

使用场景

回调函数通知客户端执行结果,或发送通知,在方法执行时间比较长时,类似异步调用,审批工作流中回调客户端审批结果。

使用方式服务接口示例

CallbackService.java

package com.callback; public interface CallbackService { void addListener(String key, CallbackListener listener); }

CallbackListener.java

package com.callback; public interface CallbackListener { void changed(String msg); } 服务提供者接口实现示例package com.callback.impl; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import com.callback.CallbackListener; import com.callback.CallbackService; public class CallbackServiceImpl implements CallbackService { private final Map listeners = new ConcurrentHashMap(); public CallbackServiceImpl() { Thread t = new Thread(new Runnable() { public void run() { while(true) { try { for(Map.Entry entry : listeners.entrySet()){ try { entry.getValue().changed(getChanged(entry.getKey())); } catch (Throwable t) { listeners.remove(entry.getKey()); } } Thread.sleep(5000); // 定时触发变更通知 } catch (Throwable t) { // 防御容错 t.printStackTrace(); } } } }); t.setDaemon(true); t.start(); } public void addListener(String key, CallbackListener listener) { listeners.put(key, listener); listener.changed(getChanged(key)); // 发送变更通知 } private String getChanged(String key) { return "Changed: " + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); } } 服务提供者配置示例 服务消费者配置示例 服务消费者调用示例ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:consumer.xml"); context.start(); CallbackService callbackService = (CallbackService) context.getBean("callbackService"); callbackService.addListener("foo.bar", new CallbackListener(){ public void changed(String msg) { System.out.println("callback1:" + msg); } }); Feedback

Was this page helpful?

Glad to hear it! Please tell us how we can improve.

Sorry to hear that. Please tell us how we can improve.

最后修改 February 9, 2023: Update docsy to 0.6.0 (#2141) (2008157832)


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3